// 使用JavaScript编写一个方法检查数字（整数、小数）范围是否覆盖了全部数轴、并且没有重叠：
// 为每个符号定义一个数值，2范围 3> 4< 5>= 6<= 7!= 8=
// 输入(3,5)表示>5，输入(2,(5,10])表示范围(5,10]，输入(7,5)表示 !=5
// 例如
// 1、输入(8,5) (7,5) 输出OK
// 2、输入(4,5) (8,5) (3,5) 输出OK
// 3、输入(4,5) (3,5) 输出ERROR
// 4、输入(4,5) (2,[5,10)) (8,10) (3,10) 输出OK
// 5、输入(6,5) (2,[5,10)) (8,10) (3,10) 输出ERROR
// 6、输入(4,5) (2,[5,10]) (2,[6,8]) (3,10) 输出ERROR

/**
 * 筛选出 大于的数 bigArr
 * 筛选出 小于的数 smaArr
 * 筛选出 等于的数 samArr
 * 判断是否完全一致
**/

const big = 3, sma = 4, bas = 5, sas = 6, nsam = 7, sam = 8
const bigArr = [], smaArr = [], samArr = []
let str = '(4,5) (2,[5,10]) (2,[6,8]) (3,10)'
console.log('输入值：', str)
strArr = str.split(' ')
strArr.forEach((item) => {
    rt(item)
})

// console.log("大于数组：", bigArr)
// console.log("等于数组：", samArr)
// console.log("小于数组：", smaArr)

// if (!(bigArr.length === samArr.length && samArr.length === smaArr.length)) {
//     console.log('ERROR')
// } else {
//     if (Array.from(new Set(bigArr)).length !== bigArr.length) {
//         console.log('ERROR')
//         return
//     }
//     if (Array.from(new Set(samArr)).length !== samArr.length) {
//         console.log('ERROR')
//         return
//     }
//     if (Array.from(new Set(smaArr)).length !== smaArr.length) {
//         console.log('ERROR')
//         return
//     }
//     let flag = true
//     for (i = 0; i < samArr.length; i++) {
//         if (!bigArr.includes(samArr[i]) || !bigArr.includes(samArr[i])) {
//             flag = false
//             break;
//         }
//     }
//     console.log(flag ? 'TRUE' : 'ERROR')
// }

bigArr.sort()
samArr.sort()
smaArr.sort()

if (JSON.stringify(samArr) === JSON.stringify(bigArr) && (JSON.stringify(samArr) === JSON.stringify(smaArr))) {
    console.log('True')
} else {
    console.log('ERROR')
}


function rt (str) {
    str = str.substring(1, str.length - 1)
    let arr = str.split(',')
    if (arr.length === 2) {
        item = Number(arr[0])
        switch (item) {
            case big:
                bigArr.push(Number(arr[1]));
                break;
            case sma:
                smaArr.push(Number(arr[1]));
                break;
            case bas:
                bigArr.push(Number(arr[1]));
                samArr.push(Number(arr[1]));
                break;
            case sas:
                smaArr.push(Number(arr[1]));
                samArr.push(Number(arr[1]));
                break;
            case nsam:
                smaArr.push(Number(arr[1]));
                bigArr.push(Number(arr[1]));
                break;
            case sam:
                samArr.push(Number(arr[1]));
                break;
        }
    } else if (arr.length === 3 && Number(arr[0]) === 2) {

        if (arr[1].indexOf('[') === 0) {
            arr[1] = arr[1].substring(1)
            samArr.push(Number(arr[1]));
        } else if (arr[1].indexOf('(') === 0) {
            arr[1] = arr[1].substring(1)
        } else {
            console.log('数据不正确,输入(3,5)表示>5，输入(2,(5,10])表示范围(5,10]，输入(7,5)表示 !=5，空格隔开')
        }

        let num = arr[2].length - 1
        if (arr[2].indexOf(']') === num) {
            arr[2] = arr[2].substring(0, num)
            samArr.push(Number(arr[2]));
        } else if (arr[2].indexOf(')') === num) {
            arr[2] = arr[2].substring(0, num)
        } else {
            console.log('数据不正确,输入(3,5)表示>5，输入(2,(5,10])表示范围(5,10]，输入(7,5)表示 !=5，空格隔开')
        }

        bigArr.push(Number(arr[1]));
        smaArr.push(Number(arr[2]));
    } else {
        console.log('数据不正确,输入(3,5)表示>5，输入(2,(5,10])表示范围(5,10]，输入(7,5)表示 !=5，空格隔开')
    }
}
